#include "widget.h"
#include "ui_widget.h"
#include <thread>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    connect(this,&Widget::Timeout,this,&Widget::handle,Qt::QueuedConnection);

    //利用c++11标准库中的sleep_for来休眠一秒，实现倒计时
    std::thread t([this](){
        //先休眠一秒
        std::this_thread::sleep_for(std::chrono::seconds(1));

        //获取QLCDNumber的值
        int value = this->ui->lcdNumber->intValue();
        if(value <= 0)
        {
            return;
        }

        //倒计时减一
        //qt中，为了避免线程安全问题，修改界面必须由主线程来修改。
        // value--;
        // this->ui->lcdNumber->display(value);

        //发射信号，由主线程中槽函数修改界面
        value--;
        emit Timeout(value);
    });
}

Widget::~Widget()
{
    delete ui;
}

void Widget::handle(int value)
{
    this->ui->lcdNumber->display(value);
}

